package voliatile;

import java.util.concurrent.TimeUnit;

//voliatile关键字作用
//1.保证可见性  2.不保证原子性 3.防止指令重排
public class Demo {
    //可见性操作 不加volatile关键字会陷入死循环，不知道内存中的值已经改变了，不可见特性
    private volatile static int num = 0;
    public static void main(String[] args) {
        new Thread(()->{
            while (num==0){
            }
        }).start();
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        num = 1;
        System.out.println(num);
    }
}
